package org.summerframework.component.security.core.service;

import org.summerframework.component.security.LoginData;

/**
 * @author 石超
 * @version v1.0.0
 */
public interface UserLoginService<T> {
    /**
     * 登录成功信息
     *
     * @param loginData 登录上下文
     */
    default void updateLoginLog(LoginData<T> loginData) {
    }

    /**
     * 完成登录
     *
     * @param loginData 登录上下文
     * @param user      用户信息
     */
    default void finishLogin(LoginData<T> loginData, T user) {
    }

    /**
     * 登录成功失败计数
     *
     * @param flag true:超过最大错误限度, false:未超过
     */
    default void updateFailCount(boolean flag) {
    }

    /**
     * 创建用户
     *
     * @param userCreateDTO 创建用户的元素
     * @return 用户
     */
    default T createUser(LoginData<T> loginData, UserCreateDTO userCreateDTO) {
        return null;
    }
}
